import cv2
import numpy as np
img = cv2.imread('RC/5.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 해리스 코너 검출
corner = cv2.cornerHarris(gray, 2, 3, 0.04)
# 변화량 결과의 최대값 10% 이상의 좌표 구하기
coord = np.where(corner > 0.1* corner.max())
coord = np.stack((coord[1], coord[0]), axis=-1)
# 코너 좌표에 동그리미 그리기
for x, y in coord:
cv2.circle(img, (x,y), 5, (0,0,255), 1, cv2.LINE_AA)
# 변화량을 영상으로 표현하기 위해서 0~255로 정규화
corner_norm = cv2.normalize(corner, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)
# 화면에 출력
corner_norm = cv2.cvtColor(corner_norm, cv2.COLOR_GRAY2BGR)
merged = np.hstack((corner_norm, img))
cv2.imshow('Harris Corner', merged)
cv2.waitKey()
cv2.destroyAllWindows()
import cv2
import numpy as np
img = cv2.imread('RC/5.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 시-토마스의 코너 검출 메서드
corners = cv2.goodFeaturesToTrack(gray, 80, 0.01, 10)
# 실수 좌표를 정수 좌표로 변환
corners = np.int32(corners)
# 좌표에 동그라미 표시
for corner in corners:
x, y = corner[0]
cv2.circle(img, (x, y), 5, (0,0,255), 1, cv2.LINE_AA)
cv2.imshow('Corners', img)
cv2.waitKey()
cv2.destroyAllWindows()
import cv2
import numpy as np
img = cv2.imread('RC/5.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# GFTT 검출기 생성
gftt = cv2.GFTTDetector_create()
# 특징점 검출
keypoints = gftt.detect(gray, None)
# 특징점 그리기
img_draw = cv2.drawKeypoints(img, keypoints, None)
cv2.imshow('GFTTDetector', img_draw)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
import numpy as np
img = cv2.imread('RC/5.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# FAST 특징 검출기 생성
fast = cv2.FastFeatureDetector_create(50)
# 특징점 검출
keypoints = fast.detect(gray, None)
# 특징점 그리기
img_draw = cv2.drawKeypoints(img, keypoints, None)
cv2.imshow('FAST', img_draw)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
import numpy as np
img = cv2.imread('RC/5.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# SimpleBlobDetector 생성
detector = cv2.SimpleBlobDetector_create()
# 특징점 검출
keypoints = detector.detect(gray)
# 특징점 빨간색으로 표시
img = cv2.drawKeypoints(img, keypoints, None, (0, 0, 255), flags = cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imshow("Blob", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
import cv2
import numpy as np
img = cv2.imread('RC/5.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# blob 필터 파라미터
params = cv2.SimpleBlobDetector_Params()
params.minThreshold = 10
params.maxThreshold = 240
params.thresholdStep = 5
params.filterByArea = True
params.minArea = 200
params.filterByColor = False
params.filterByConvexity = False
params.filterByInertia = False
params.filterByCircularity = False
detector = cv2.SimpleBlobDetector_create(params)
keypoints = detector.detect(gray)
img_draw = cv2.drawKeypoints(img, keypoints, None, None, cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imshow('Blob with Params', img_draw)
cv2.waitKey(0)
cv2.destroyAllWindows()